This invention relates to relational database management systems. More particularly, a system and methods are provided for allowing a middle-tier server in a relational database system to perform database operations on behalf of clients in a manner that ensures proper authentication, accountability and auditing at each tier.
Relational database management systems often employ a multi-tier structure to manage access to data stored in the system. A three-tier structure, for example, may comprise a database server storing data, a middle-tier server (e.g., an application server) and any number of clients (e.g., users or processes requiring access to the data). In this structure clients may connect to the middle-tier server which then accesses the data stored on the database server.
Existing systems and methods by which a middle-tier server accesses data on a database server and is able to perform operations on behalf of clients possess inherent deficiencies and vulnerabilities. In one method, the middle-tier server acts as a sort of "super" client that has sufficient privileges and roles to access any data that a client may require and perform virtually any operation, that is possible on the database server. In another method, the middle-tier server assumes a particular client's identity, including privileges and roles, in order to access data and perform database operations on a client's behalf.
The first method, in which the middle-tier server acts as a "super" client, makes the data and database server vulnerable to the middle-tier server. For example, if the operator or administrator of the database server has little or no oversight of the middle-tier server, or the operator of the middle-tier server is unscrupulous or incompetent, the database may be at risk of unauthorized alteration. Because the middle-tier server is connected under cover of its own identity, there is typically no way for the database server to tell which client, if any, the middle-tier server is acting for. Further, there is generally no way to limit the operations that may be performed by a middle-tier server acting on behalf of a client, as opposed, for example, to when the client connects directly to the database server. In short, in an environment in which a middle-tier server can act as a "super" client with an abundance of privileges, there is little, if any, possibility of accurate and reliable authentication, accountability and auditing of the super client's behavior.
The second method is little better. Here the middle-tier server takes on the identity of a user, including its privileges or roles, in order to access the database server. Typically, the middle-tier server does this by establishing a connection to the database server in the name of the client using the client's password. This method therefore requires the middle-tier server to retain sensitive information concerning each client for which it may act (e.g., password). There is nothing, however, to keep the middle-tier server from assuming one client's identity (e.g., one with high-level privileges) and performing database operations on its own behalf or on behalf of a different user. As with the first method there is little, if any, accountability over the middle-tier server's actions and no way to verify, through auditing or otherwise, which actions are being performed by the server itself and which actions are performed on behalf of the client.
Thus, there is a need for a relational database system that allows a database administrator to limit or restrict the authority and ability of middle-tier servers. In such a system a middle-tier server's actions would be auditable and the administrator would be able to limit the privileges and/or roles of clients and middle-tier servers when a client connects to a data server through a middle-tier server.